
package kaizen.nomweb;

import java.io.*;

import java.net.MalformedURLException;
import java.net.URL;

import java.util.Properties;
import java.util.Vector;

import javax.servlet.*;
import javax.servlet.http.*;

import kaizen.jdbc.*;

// Referenced classes of package kaizen.nomweb:
//            FuncEng, utilerias

public final class templates extends HttpServlet 
{

  public templates()
  {
  }

  public static String agregaElementoCombo(String combo, String clave, 
                                           String desc, String valor_cmb)
  {
    if (valor_cmb == null)
      valor_cmb = "";
    String nuevoDat = "";
    if (clave.trim().equals(valor_cmb.trim()))
    {
      combo = utilerias.replaceString1(combo, "selected", "");
      nuevoDat = 
          "<option value=\"" + clave + "\" selected>" + desc + "</option>";
    } else
    {
      nuevoDat = "<option value=\"" + clave + "\">" + desc + "</option>";
    }
    combo = 
        utilerias.replaceString1(combo, "</select>", nuevoDat + "\n </select>");
    return combo;
  }

  public void doGet(HttpServletRequest req, 
                    HttpServletResponse resp) throws ServletException, 
                                                     IOException
  {
    resp.setContentType("text/html");
    PrintWriter out = new PrintWriter(resp.getOutputStream());
  }

  public static String generaArbolOpcion(String padre, String submenu, 
                                         String grupo, String idioma, 
                                         HttpServletRequest req, 
                                         String link) throws IOException
  {
    String sistema = utilerias.tomaParametro("dic_sistema", req);
    if (submenu == null)
      submenu = "";
    submenu = submenu.trim();
    if (padre != null)
      padre = padre.trim();
    else
      return "Nombre de opcion incorrecta";
    if (padre.length() == 0)
    {
      return "Nombre de opcion incorrecta";
    } else
    {
      String sArbol = "";
      String sql = 
        "select me_cveopc_ejec , mo_nombre,  op_url, op_prog_apart, op_tipo, me_cveopc from gentop , gentmo, gentme, gentpe ";
      sql = 
          sql + " where mo_cveopc = me_cveopc_ejec  and mo_cvesis = '" + sistema + 
          "'  and me_cvesis = mo_cvesis and  op_cvesis = mo_cvesis and pe_cvesis = mo_cvesis ";
      sql = 
          sql + " and  me_cveopc_ejec = op_cveopc and pe_cveopc = me_cveopc_ejec  and pe_gpousu = '" + 
          grupo + "' and mo_cveidi ='Esp' order by me_numopc";
      Vector menus_hijos = DbAppCache.execQuery(sql);
      sql = " select mo_nombre from gentop , gentmo ";
      sql = 
          sql + " where mo_cveopc = op_cveopc and mo_cvesis = '" + sistema + "' and mo_cveidi = '" + 
          idioma + "'";
      sql = sql + " and mo_cveopc = '" + padre + "'";
      String nombreOpcvalor = utilerias.valorSqlCache(sql);
      sArbol = 
          sArbol + "<param name=\"topdesc\" value=\"2|" + nombreOpcvalor + "\">\n";
      sArbol = 
          sArbol + generaOpcionesArbol("desc", submenu, padre, menus_hijos, 
                                       sistema, link);
      return sArbol;
    }
  }

  public static String generaCalendario(String campo, String valor)
  {
    String cal = "";
      cal = "<SCRIPT language=JavaScript src=\"/scm/JFCal/ts_picker.js\"></SCRIPT>";
      //cal = "<SCRIPT language=JavaScript src=\"http://apweb.cmoctezuma.com.mx/scm/JFCal/ts_picker.js\"></SCRIPT>";
    cal = 
        cal + "<input  size=\"15\"   type=\"text\" name=\"--campo--\" value=\"--valor--\">";
    cal = 
        cal + "<A href=\"javascript:show_calendar('document.data.--campo--',document.data.--campo--.value);\">";
    cal = 
      //cal + "<IMG height=16 alt=\"Presione aqui para poner la fecha\" src=\"/JFCal/cal.gif\" width=16 border=0></A>";
      cal + "<IMG height=16 alt=\"Presione aqui para poner la fecha\" src=\"/scm/JFCal/cal.gif\" width=16 border=0></A>";
        //cal + "<IMG height=16 alt=\"Presione aqui para poner la fecha\" src=\"http://apweb.cmoctezuma.com.mx/scm/JFCal/cal.gif\" width=16 border=0></A>";
    if (valor == null)
      valor = "";
    if (campo == null)
      campo = "";
    cal = utilerias.replaceString(cal, "--campo--", campo);
    cal = utilerias.replaceString(cal, "--valor--", valor);
    return cal;
  }

  public static String generaCheck(String campo, String valor)
  {
    String check = "";
    if (valor == null)
      valor = "0";
    if (valor.trim().startsWith("0"))
      check = 
          "<input type=\"checkbox\" name=\"" + campo + "\" value=\"" + "1" + 
          "\">";
    else
      check = 
          "<input type=\"checkbox\" name=\"" + campo + "\" value=\"" + valor + 
          "\" checked>";
    return check;
  }

  public static String generaCombo(String campo, String sql, 
                                   String valor) throws IOException
  {
    return generaCombo(campo, sql, valor, false);
  }

  public static String generaCombo(String campo, String sql, String valor, 
                                   boolean todoSelecto) throws IOException
  {
    boolean sec = false;
    if (sql == null)
      return "";
    if (valor == null)
      valor = "";
    if (sql.trim().length() == 0)
      return "<select name=\"" + campo.trim() + "\"></select>";
    if (sql.startsWith("secuencia="))
    {
      sec = true;
      sql = utilerias.generaValDer("secuencia=", sql);
    }
    Vector vRecord = new Vector();
    try
    {
      vRecord = DbAppUnivC.execQuery(sql);
    } catch (Exception _ex)
    {
      System.out.println("error al correr el sql, ver log");
    }
    String combo = "<select name=\"" + campo.trim() + "\">";
    for (int cont = 0; cont < vRecord.size(); cont++)
    {
      dbRecord ksrecord = (dbRecord)vRecord.elementAt(cont);
      String valor1 = "";
      String valor2 = "";
      if (sec)
      {
        valor1 = String.valueOf(cont + 1);
        valor2 = utilerias.validaNulo(ksrecord.getField(1));
      } else
      {
        valor1 = utilerias.validaNulo(ksrecord.getField(1));
        valor2 = utilerias.validaNulo(ksrecord.getField(2));
      }
      if (ksrecord.getField(1).trim().equals(valor.trim()))
        combo = 
            combo + "<option value=\"" + valor1 + "\" selected>" + valor2 + "</option>";
      else if (cont == 0 || todoSelecto)
        combo = 
            combo + "<option value=\"" + valor1 + "\" selected>" + valor2 + "</option>";
      else
        combo = 
            combo + "<option value=\"" + valor1 + "\">" + valor2 + "</option>";
    }

    combo = combo + "</select>";
    return combo;
  }

  public static String generaComboJump(String campo, String sql, 
                                       String valor) throws IOException
  {
    String hiddens = "";
    if (sql == null)
      return "";
    if (sql.trim().length() == 0)
      return "";
    Vector vRecord = new Vector();
    try
    {
      vRecord = DbAppUnivC.execQuery(sql);
    } catch (Exception _ex)
    {
      System.out.println("error al correr el sql, ver log");
    }
    if (vRecord.size() == 0)
      return "";
    String combo = 
      "<select name=\"" + campo.trim() + "\" onChange=\"submit()\" >";
    int cont = 0;
    if (valor == null)
      valor = "";
    valor = valor.trim();
    if (valor.trim().length() == 0)
      if (vRecord.size() > 0)
        combo = combo + "<option value=\"\" selected>Seleccionar</option>";
      else
        combo = combo + "<option value=\"\" selected>No hay Datos</option>";
    String val1 = "";
    boolean flag = false;
    for (; cont < vRecord.size(); cont++)
    {
      dbRecord ksrecord = (dbRecord)vRecord.elementAt(cont);
      if (cont == 0)
        val1 = ksrecord.getField(1).trim();
      if (ksrecord.getField(1).trim().equals(valor.trim()))
      {
        combo = 
            combo + "<option value=\"" + utilerias.validaNulo(ksrecord.getField(1)) + 
            "\" selected>" + utilerias.validaNulo(ksrecord.getField(2)) + 
            "</option>";
        flag = true;
      } else
      {
        combo = 
            combo + "<option value=\"" + utilerias.validaNulo(ksrecord.getField(1)) + 
            "\">" + utilerias.validaNulo(ksrecord.getField(2)) + "</option>";
      }
    }

    combo = combo + "</select>";
    if (!flag)
      hiddens = generaHidden("selected_" + campo, val1);
    combo = combo + hiddens;
    return combo;
  }

  public static String generaComboJumpRep(String campo, Vector diccionario, 
                                          String valor, 
                                          boolean utilizaClave) throws IOException
  {
    Vector vRecord = diccionario;
    if (vRecord.size() == 0)
      return "";
    String combo = 
      "<select name=\"" + campo.trim() + "\" onChange=\"submit()\" >";
    int cont = 0;
    if (valor == null)
      valor = "";
    else
      valor = valor.trim();
    for (; cont < vRecord.size(); cont++)
    {
      String arr[] = (String[])vRecord.elementAt(cont);
      String clave = arr[2];
      if (!utilizaClave)
        clave = String.valueOf(cont + 1);
      if (clave.equals(valor.trim()))
        combo = 
            combo + "<option value=\"" + clave + "\" selected>" + arr[13] + "</option>";
      else if (cont == 0)
        combo = 
            combo + "<option value=\"" + clave + "\" selected>" + arr[13] + "</option>";
      else
        combo = 
            combo + "<option value=\"" + clave + "\">" + arr[13] + "</option>";
    }

    combo = combo + "</select>";
    return combo;
  }

  public static String generaComboyValAd(String campo, String sql, 
                                         String valor, String valorAd, 
                                         boolean todoSelecto, 
                                         boolean jump) throws IOException
  {
    String claveAd = "";
    String descAd = "";
    String hiddens = "";
    boolean flag_select = true;
    if (valorAd.length() > 0 && valorAd.indexOf(",") > 0)
    {
      claveAd = utilerias.generaValIzq(",", valorAd);
      descAd = utilerias.generaValDer(",", valorAd);
      flag_select = false;
    }
    boolean sec = false;
    if (sql == null)
      return "";
    if (valor == null)
      valor = "";
    if (sql.trim().length() == 0)
      return "<select name=\"" + campo.trim() + "\"></select>";
    if (sql.startsWith("secuencia="))
    {
      sec = true;
      sql = utilerias.generaValDer("secuencia=", sql);
    }
    Vector vRecord = new Vector();
    try
    {
      vRecord = DbAppUnivC.execQuery(sql);
    } catch (Exception _ex)
    {
      System.out.println("error al correr el sql, ver log");
    }
    String combo = "";
    boolean tieneValAd = false;
    boolean noSeleAd = false;
    if (claveAd.equals(valor))
      noSeleAd = true;
    if (claveAd.length() > 0)
      tieneValAd = true;
    String val1 = "";
    boolean flag = false;
    for (int cont = 0; cont < vRecord.size(); cont++)
    {
      dbRecord ksrecord = (dbRecord)vRecord.elementAt(cont);
      String valor1 = "";
      String valor2 = "";
      if (sec)
      {
        valor1 = String.valueOf(cont + 1);
        valor2 = utilerias.validaNulo(ksrecord.getField(1));
      } else
      {
        valor1 = utilerias.validaNulo(ksrecord.getField(1));
        valor2 = utilerias.validaNulo(ksrecord.getField(2));
      }
      if (cont == 0)
        val1 = valor1;
      if (ksrecord.getField(1).trim().equals(valor.trim()))
      {
        combo = 
            combo + "<option value=\"" + valor1 + "\" selected>" + valor2 + "</option>";
        flag = true;
      } else if (cont == 0 && !tieneValAd || todoSelecto)
        combo = 
            combo + "<option value=\"" + valor1 + "\" selected>" + valor2 + "</option>";
      else
        combo = 
            combo + "<option value=\"" + valor1 + "\">" + valor2 + "</option>";
    }

    if (claveAd.length() > 0)
      if (claveAd.equals(valor) || !flag)
        combo = 
            "<option value=\"" + claveAd + "\" selected>" + descAd + "</option>" + 
            combo;
      else
        combo = 
            "<option value=\"" + claveAd + "\">" + descAd + "</option>" + combo;
    if (jump)
      combo = 
          "<select name=\"" + campo.trim() + "\" onChange=\"submit()\" >" + combo;
    else
      combo = "<select name=\"" + campo.trim() + "\">" + combo;
    combo = combo + "</select>";
    if (jump && !flag)
      hiddens = generaHidden("selected_" + campo, val1);
    combo = combo + hiddens;
    return combo;
  }

  public static String generaConsultaTextArea(String texto, String ancho)
  {
    String contenido = "";
    contenido = contenido + "<tr>";
    contenido = contenido + "<td";
    contenido = contenido + "</tr>";
    return tabla("0", contenido, "100");
  }

  public static String generaForma(String datos, String accion, 
                                   String valorsbm)
  {
    String forma = "<form method=\"post\" action=\"" + accion.trim() + "\">";
    forma = forma + datos;
    forma = forma + generaSubmit(valorsbm);
    forma = forma + "</form>";
    return forma;
  }

  private static String generaForma(String datos, String accion, 
                                    String valorsbm, String hiddens)
  {
    String forma = 
      "<form name = \"data\" method=\"post\" action=\"" + accion.trim() + 
      "\">" + "\n";
    forma = forma + datos + "\n";
    forma = forma + hiddens + "\n";
    forma = forma + "<br>" + generaSubmit(valorsbm) + "\n";
    forma = forma + "</form>\n";
    forma = forma + "<div id=\"popupcalendar\" class=\"text\"></div> \n";
    return forma;
  }

  public static String generaFormaBImagen(String datos, String accion, 
                                          String imagen, String hiddens)
  {
    String forma = 
      "<form method=\"post\" action=\"" + accion.trim() + "\">" + "\n";
    forma = forma + datos + "\n";
    forma = forma + hiddens + "\n";
    forma = 
        forma + "<input type=\"image\" border=\"0\" name=\"imageField\" src=\"" + 
        imagen + "\" >" + "\n";
    forma = forma + "</form>\n";
    return forma;
  }

  public static String generaFormaSinBoton(String datos, String accion)
  {
    String forma = "<form method=\"post\" action=\"" + accion.trim() + "\">";
    forma = forma + datos;
    forma = forma + "</form>";
    return forma;
  }

  public static String generaHTML(String campo, String tipo, String longitud, 
                                  String ancho, String lineas, String joinFK, 
                                  String valorcmb, String numObjeto, 
                                  HttpServletRequest req) throws IOException
  {
    String sistema = utilerias.tomaParametro("dic_sistema", req);
    String nombre_prop = "/kaizen/" + sistema + "Web.properties";
    Properties props = utilerias.loadProperties(nombre_prop);
    if (valorcmb == null)
      valorcmb = "";
    if (joinFK == null)
      joinFK = "";
    if (joinFK.toLowerCase().startsWith("select") && !tipo.equals("detalle") && 
        !tipo.equals("listasl") && !tipo.equals("det_lista"))
      joinFK = utilerias.validaJoinFk(joinFK, req);
    String strResultado = "";
    if (tipo.trim().equals("lista"))
    {
      strResultado = 
          generaHTML(campo, "menu", longitud, ancho, lineas, joinFK, valorcmb, 
                     numObjeto, req);
      String listaProp = "size = \"" + longitud + "\" multiple>";
      strResultado = utilerias.replaceString1(strResultado, ">", listaProp);
    }
    if (tipo.trim().equals("lista_seleccionada"))
    {
      strResultado = strResultado + generaCombo(campo, joinFK, valorcmb, true);
      String listaProp = "size = \"" + longitud + "\" multiple>";
      strResultado = utilerias.replaceString1(strResultado, ">", listaProp);
    }
    String plant_lista = "lista.htm";
    if (tipo.equals("listasl_v"))
    {
      tipo = "listasl";
      plant_lista = "lista_v.htm";
    }
    if (tipo.trim().equals("listasl"))
    {
      String sql1 = "";
      String sql2 = "";
      if (joinFK.indexOf("--consulta--") > 0)
      {
        sql1 = utilerias.generaValIzq("--consulta--", joinFK);
        sql2 = utilerias.generaValDer("--consulta--", joinFK);
        sql2 = utilerias.validaJoinFk(sql2, req);
      } else
      {
        sql1 = joinFK;
      }
      sql1 = utilerias.validaJoinFk(sql1, req);
      String nombre_lista = "lista" + numObjeto;
      String Objeto_lista = 
        generaHTML(nombre_lista, "lista", longitud, ancho, lineas, sql1, 
                   valorcmb, numObjeto, req);
      String Objeto_campo = 
        generaHTML(campo, "lista_seleccionada", longitud, ancho, lineas, sql2, 
                   valorcmb, numObjeto, req);
      String dirPlantillas = props.getProperty("plantillas");
      String listasel = generaPlantilla(dirPlantillas + plant_lista, req);
      strResultado = 
          utilerias.replaceString1(listasel, "--Objeto_lista--", Objeto_lista);
      strResultado = 
          utilerias.replaceString1(strResultado, "--Objeto_campo--", Objeto_campo);
      strResultado = 
          utilerias.replaceString(strResultado, "--nombre_lista--", nombre_lista);
      strResultado = utilerias.replaceString(strResultado, "campo", campo);
    }
    if (tipo.trim().equals("det_lista"))
    {
      String sql = "";
      if (joinFK.indexOf("--consulta--") > 0)
        sql = utilerias.generaValDer("--consulta--", joinFK);
      else
        sql = joinFK;
      sql = utilerias.validaJoinFk(sql, req);
      if (joinFK != null && joinFK.trim().length() > 0)
      {
        Vector vRecord = new Vector();
        try
        {
          vRecord = DbAppUnivC.execQuery(joinFK);
        } catch (Exception _ex)
        {
          System.out.println("error al correr el sql, ver log");
        }
        if (vRecord.size() == 0)
          return "";
        for (int cont = 0; cont < vRecord.size(); cont++)
        {
          dbRecord ksrecord = (dbRecord)vRecord.elementAt(cont);
          String res = "";
          if (ksrecord.getField(2) != null)
            res = ksrecord.getField(2).trim();
          strResultado = strResultado + res;
          strResultado = strResultado + "<br>";
        }

      } else
      {
        strResultado = strResultado + "";
      }
    }
    if (tipo.trim().equals("lista_o"))
      if (joinFK != null && joinFK.trim().length() > 0)
      {
        if (joinFK.toLowerCase().startsWith("select"))
        {
          Vector vRecord = new Vector();
          try
          {
            vRecord = DbAppUnivC.execQuery(joinFK);
          } catch (Exception _ex)
          {
            System.out.println("error al correr el sql, ver log");
          }
          if (vRecord.size() == 0)
            return generaHidden(campo, "");
          int a = 0;
          String lista_oculta = "";
          for (; a < vRecord.size(); a++)
          {
            dbRecord ksrecord = (dbRecord)vRecord.elementAt(a);
            String clave = ksrecord.getField(1);
            lista_oculta = lista_oculta + clave;
            if (a + 1 < vRecord.size())
              lista_oculta = lista_oculta + ", ";
          }

          System.out.println(lista_oculta);
          strResultado = strResultado + generaHidden(campo, lista_oculta);
        }
      } else
      {
        strResultado = strResultado + generaHidden(campo, "");
      }
    if (tipo.trim().equals("menu"))
      strResultado = generaHtmlMenu(campo, valorcmb, joinFK, false, false);
    if (tipo.trim().equals("jump"))
    {
      boolean jump = true;
      strResultado = 
          strResultado + generaHtmlMenu(campo, valorcmb, joinFK, false, jump);
    }
    if (tipo.trim().equals("etiq") || tipo.trim().equals("sec"))
      if (joinFK.trim().length() > 0)
      {
        Vector vRecord = new Vector();
        try
        {
          vRecord = DbAppUnivC.execQuery(joinFK);
        } catch (Exception _ex)
        {
          System.out.println("error al correr el sql, ver log");
        }
        if (vRecord.size() == 0)
          return "";
        int cont = 0;
        String val_clave = "";
        for (; cont < vRecord.size(); cont++)
        {
          dbRecord ksrecord = (dbRecord)vRecord.elementAt(cont);
          String res = "";
          if (ksrecord.getField(1) != null)
            res = ksrecord.getField(1).trim();
          strResultado = res;
          val_clave = res;
          System.out.println(valorcmb + " =" + res);
          if (valorcmb.toUpperCase().equals(res.toUpperCase()))
          {
            val_clave = ksrecord.getField(1);
            strResultado = ksrecord.getField(2);
            strResultado = strResultado + generaHidden(campo, val_clave);
            cont = vRecord.size();
          }
        }

      } else
      {
        strResultado = valorcmb;
      }
    if (tipo.trim().equals("fecha"))
    {
      String valFecha = valorcmb;
      if (joinFK.trim().length() > 0)
      {
        Vector vRecord = new Vector();
        try
        {
          vRecord = DbAppUnivC.execQuery(joinFK);
        } catch (Exception _ex)
        {
          System.out.println("error al correr el sql, ver log");
        }
        if (vRecord.size() == 0)
          return "";
        for (int cont = 0; cont < vRecord.size(); cont++)
        {
          dbRecord ksrecord = (dbRecord)vRecord.elementAt(cont);
          String res = "";
          if (ksrecord.getField(1) != null)
            res = ksrecord.getField(1).trim();
          valFecha = valFecha + res;
          if (valorcmb.equals(res))
          {
            strResultado = ksrecord.getField(2);
            cont = vRecord.size();
          }
        }

      }
      String dir_pagInicio = props.getProperty("dir_pagInicio");
      strResultado = generaCalendario(campo, valFecha);
    }
    if (tipo.trim().equals("textarea"))
      if (joinFK != null && joinFK.trim().length() > 0)
      {
        Vector vRecord = new Vector();
        try
        {
          vRecord = DbAppUnivC.execQuery(joinFK);
        } catch (Exception _ex)
        {
          System.out.println("error al correr el sql, ver log");
        }
        if (vRecord.size() == 0)
          return "";
        for (int cont = 0; cont < vRecord.size(); cont++)
        {
          dbRecord ksrecord = (dbRecord)vRecord.elementAt(cont);
          String res = "";
          if (ksrecord.getField(1) != null)
            res = ksrecord.getField(1).trim();
          strResultado = 
              strResultado + generaTextArea(campo, longitud, ancho, lineas, 
                                            res);
        }

      } else
      {
        strResultado = 
            strResultado + generaTextArea(campo, longitud, ancho, lineas, 
                                          valorcmb);
      }
    if (tipo.trim().equals("consulta_textarea"))
      if (joinFK != null && joinFK.trim().length() > 0)
      {
        Vector vRecord = new Vector();
        try
        {
          vRecord = DbAppUnivC.execQuery(joinFK);
        } catch (Exception _ex)
        {
          System.out.println("error al correr el sql, ver log");
        }
        if (vRecord.size() == 0)
          return "";
        for (int cont = 0; cont < vRecord.size(); cont++)
        {
          dbRecord ksrecord = (dbRecord)vRecord.elementAt(cont);
          String res = "";
          if (ksrecord.getField(1) != null)
            res = ksrecord.getField(1).trim();
          strResultado = strResultado + res;
        }

      } else
      {
        strResultado = valorcmb;
      }
    if (tipo.trim().equals("texto"))
      if (joinFK != null && joinFK.trim().length() > 0)
      {
        Vector vRecord = new Vector();
        try
        {
          vRecord = DbAppUnivC.execQuery(joinFK);
        } catch (Exception _ex)
        {
          System.out.println("error al correr el sql, ver log");
        }
        if (vRecord.size() == 0)
          return "";
        for (int cont = 0; cont < vRecord.size(); cont++)
        {
          dbRecord ksrecord = (dbRecord)vRecord.elementAt(cont);
          String res = "";
          if (ksrecord.getField(1) != null)
            res = ksrecord.getField(1).trim();
          strResultado = 
              strResultado + generaTexto(campo, longitud, ancho, res);
        }

      } else
      {
        strResultado = 
            strResultado + generaTexto(campo, longitud, ancho, valorcmb);
      }
    if (tipo.trim().equals("fijo"))
      if (joinFK != null && joinFK.trim().length() > 0)
      {
        Vector vRecord = new Vector();
        try
        {
          vRecord = DbAppUnivC.execQuery(joinFK);
        } catch (Exception _ex)
        {
          System.out.println("error al correr el sql, ver log");
        }
        if (vRecord.size() == 0)
          return "";
        for (int cont = 0; cont < vRecord.size(); cont++)
        {
          dbRecord ksrecord = (dbRecord)vRecord.elementAt(cont);
          String res = "";
          if (ksrecord.getField(1) != null)
            res = ksrecord.getField(1).trim();
          generaHidden(campo, res);
          strResultado = strResultado + res + generaHidden(campo, res);
        }

      } else
      {
        strResultado = strResultado + valorcmb + generaHidden(campo, valorcmb);
      }
    if (tipo.trim().equals("check"))
      if (joinFK != null && joinFK.trim().length() > 0)
      {
        Vector vRecord = new Vector();
        try
        {
          vRecord = DbAppUnivC.execQuery(joinFK);
        } catch (Exception _ex)
        {
          System.out.println("error al correr el sql, ver log");
        }
        if (vRecord.size() == 0)
          return "";
        for (int cont = 0; cont < vRecord.size(); cont++)
        {
          dbRecord ksrecord = (dbRecord)vRecord.elementAt(cont);
          strResultado = 
              strResultado + generaCheck(campo, ksrecord.getField(1).trim());
        }

      } else
      {
        strResultado = strResultado + generaCheck(campo, "0");
      }
    if (tipo.equals("detalle"))
      strResultado = FuncEng.generaCampoDetalle(joinFK, req);
    return strResultado;
  }

  public static String generaHTMLVFijo(String campo, String tipo, 
                                       String longitud, String ancho, 
                                       String lineas, String joinFK, 
                                       String valorcmb, String numObjeto, 
                                       HttpServletRequest req) throws IOException
  {
    String sistema = utilerias.tomaParametro("dic_sistema", req);
    String nombre_prop = "/kaizen/" + sistema + "Web.properties";
    Properties props = utilerias.loadProperties(nombre_prop);
    if (valorcmb == null)
      valorcmb = "";
    if (joinFK == null)
      joinFK = "";
    if (joinFK.toLowerCase().startsWith("select") && !tipo.equals("detalle") && 
        !tipo.equals("listasl") && !tipo.equals("det_lista"))
      joinFK = utilerias.validaJoinFk(joinFK, req);
    String strResultado = "";
    if (tipo.trim().equals("menu"))
      strResultado = generaHtmlMenu(campo, valorcmb, joinFK, false, false);
    if (tipo.trim().equals("lista"))
    {
      strResultado = 
          generaHTMLVFijo(campo, "menu", longitud, ancho, lineas, joinFK, 
                          valorcmb, numObjeto, req);
      String listaProp = "size = \"" + longitud + "\" multiple>";
      strResultado = utilerias.replaceString1(strResultado, ">", listaProp);
    }
    String plant_lista = "lista.htm";
    if (tipo.equals("listasl_v"))
    {
      tipo = "listasl";
      plant_lista = "lista_v.htm";
    }
    if (tipo.trim().equals("listasl"))
    {
      String sql1 = "";
      String sql2 = "";
      if (joinFK.indexOf("--consulta--") > 0)
      {
        sql1 = utilerias.generaValIzq("--consulta--", joinFK);
        sql2 = utilerias.generaValDer("--consulta--", joinFK);
        sql2 = utilerias.validaJoinFk(sql2, req);
      } else
      {
        sql1 = joinFK;
      }
      sql1 = utilerias.validaJoinFk(sql1, req);
      String nombre_lista = "lista" + numObjeto;
      String Objeto_lista = 
        generaHTML(nombre_lista, "lista", longitud, ancho, lineas, sql1, 
                   valorcmb, numObjeto, req);
      String Objeto_campo = 
        generaHTML(campo, "lista_seleccionada", longitud, ancho, lineas, sql2, 
                   valorcmb, numObjeto, req);
      String dirPlantillas = props.getProperty("plantillas");
      String listasel = generaPlantilla(dirPlantillas + plant_lista, req);
      strResultado = 
          utilerias.replaceString1(listasel, "--Objeto_lista--", Objeto_lista);
      strResultado = 
          utilerias.replaceString1(strResultado, "--Objeto_campo--", Objeto_campo);
      strResultado = 
          utilerias.replaceString(strResultado, "--nombre_lista--", nombre_lista);
      strResultado = utilerias.replaceString(strResultado, "campo", campo);
    }
    if (tipo.trim().equals("det_lista"))
    {
      String sql = "";
      if (joinFK.indexOf("--consulta--") > 0)
        sql = utilerias.generaValDer("--consulta--", joinFK);
      else
        sql = joinFK;
      sql = utilerias.validaJoinFk(sql, req);
      if (sql != null && sql.trim().length() > 0)
      {
        Vector vRecord = new Vector();
        try
        {
          vRecord = DbAppUnivC.execQuery(sql);
        } catch (Exception _ex)
        {
          System.out.println("error al correr el sql, ver log");
        }
        if (vRecord.size() == 0)
          return "";
        for (int cont = 0; cont < vRecord.size(); cont++)
        {
          dbRecord ksrecord = (dbRecord)vRecord.elementAt(cont);
          String res = "";
          if (ksrecord.getField(2) != null)
            res = ksrecord.getField(2).trim();
          strResultado = strResultado + res;
          strResultado = strResultado + "<br>";
        }

      } else
      {
        strResultado = strResultado + "";
      }
    }
    if (tipo.trim().equals("lista_o"))
      if (joinFK != null && joinFK.trim().length() > 0)
      {
        if (joinFK.toLowerCase().startsWith("select"))
        {
          Vector vRecord = new Vector();
          try
          {
            vRecord = DbAppUnivC.execQuery(joinFK);
          } catch (Exception _ex)
          {
            System.out.println("error al correr el sql, ver log");
          }
          if (vRecord.size() == 0)
            return generaHidden(campo, "");
          int a = 0;
          String lista_oculta = "";
          for (; a < vRecord.size(); a++)
          {
            dbRecord ksrecord = (dbRecord)vRecord.elementAt(a);
            String clave = ksrecord.getField(1);
            lista_oculta = lista_oculta + clave;
            if (a + 1 < vRecord.size())
              lista_oculta = lista_oculta + ", ";
          }

          strResultado = strResultado + generaHidden(campo, lista_oculta);
        }
      } else
      {
        strResultado = strResultado + generaHidden(campo, "");
      }
    if (tipo.trim().equals("jump"))
    {
      boolean jump = true;
      strResultado = 
          strResultado + generaHtmlMenu(campo, valorcmb, joinFK, false, jump);
    }
    if (tipo.trim().equals("etiq") || tipo.trim().equals("sec"))
      if (joinFK.trim().length() > 0)
      {
        Vector vRecord = new Vector();
        try
        {
          vRecord = DbAppUnivC.execQuery(joinFK);
        } catch (Exception _ex)
        {
          System.out.println("error al correr el sql, ver log");
        }
        if (vRecord.size() == 0)
          return "";
        int cont = 0;
        String val_clave = "";
        for (; cont < vRecord.size(); cont++)
        {
          dbRecord ksrecord = (dbRecord)vRecord.elementAt(cont);
          String res = "";
          if (ksrecord.getField(1) != null)
            res = ksrecord.getField(1).trim();
          strResultado = res;
          val_clave = res;
          System.out.println(valorcmb + " =" + res);
          if (valorcmb.toUpperCase().equals(res.toUpperCase()))
          {
            val_clave = ksrecord.getField(1);
            strResultado = ksrecord.getField(2);
            strResultado = strResultado + generaHidden(campo, val_clave);
            cont = vRecord.size();
          }
        }

      } else
      {
        strResultado = valorcmb;
      }
    if (tipo.trim().equals("fecha"))
    {
      String dir_pagInicio = props.getProperty("dir_pagInicio");
      strResultado = generaCalendario(campo, valorcmb);
    }
    if (tipo.trim().equals("textarea"))
      strResultado = generaTextArea(campo, longitud, ancho, lineas, valorcmb);
    if (tipo.trim().equals("consulta_textarea"))
      strResultado = valorcmb;
    if (tipo.trim().equals("texto"))
      strResultado = generaTexto(campo, longitud, ancho, valorcmb);
    if (tipo.trim().equals("fijo"))
      strResultado = valorcmb + generaHidden(campo, valorcmb);
    if (tipo.trim().equals("check"))
      if (valorcmb.trim().length() == 0)
      {
        if (!sistema.equals("mocte"))
          strResultado = generaCheck(campo, "0");
        else
          strResultado = generaCheck(campo, "S");
      } else
      {
        strResultado = generaCheck(campo, valorcmb);
      }
    if (tipo.equals("detalle"))
      strResultado = FuncEng.generaCampoDetalle(joinFK, req);
    return strResultado;
  }

  public static String generaHidden(String campo, String valor)
  {
    if (valor == null)
      valor = "";
    String hidden = 
      "<input type=\"hidden\" name=\"" + campo.trim() + "\" value=\"" + 
      valor.trim() + "\">";
    return hidden;
  }

  public static String generaHref(String tabla, String estado, String mensaje, 
                                  String imagen, String target, String clase)
  {
    String href = 
      "<a href=\"/clases/servlet/" + clase + "?dic_tabla=" + tabla.trim() + 
      "&dic_estado=" + estado.trim() + "\" target = \"" + target.trim() + 
      "\">";
    if (imagen != "")
      href = href + generaImagen(tabla, imagen, mensaje);
    else
      href = href + mensaje;
    href = href + "</a>";
    return href;
  }

  public static String generaHrefConect(String tabla, String estado, 
                                        String mensaje, String imagen, 
                                        String target)
  {
    String href = 
      "<a href=\"/clases/servlet/ConectAc?dic_tabla=" + tabla.trim() + 
      "&dic_estado=" + estado.trim() + "\" target = \"" + target.trim() + 
      "\">";
    if (imagen != "")
      href = href + generaImagen(tabla, imagen, mensaje);
    else
      href = href + mensaje;
    href = href + "</a>";
    return href;
  }

  public static String generaHrefConectEst(String tabla, String estado, 
                                           String mensaje, String imagen, 
                                           String target)
  {
    String href = 
      "<a href=\"/clases/servlet/" + tabla.trim() + "?dic_estado=" + 
      estado.trim() + "\" target = \"" + target.trim() + "\">";
    if (imagen != "")
      href = href + generaImagen(tabla, imagen, mensaje);
    else
      href = href + mensaje;
    href = href + "</a>";
    return href;
  }

  public static String generaHrefEstatic(String tabla, String estado, 
                                         String mensaje, String imagen, 
                                         String target, String clase)
  {
    String href = 
      "<a href=\"/clases/servlet/" + clase + "?dic_estado=" + estado.trim() + 
      "\" target = \"" + target.trim() + "\">";
    if (imagen != "")
      href = href + generaImagen(tabla, imagen, mensaje);
    else
      href = href + mensaje;
    href = href + "</a>";
    return href;
  }

  public static String generaHrefEstatic(String tabla, String estado, 
                                         String mensaje, String imagen, 
                                         String target, String clase, 
                                         String url_clase)
  {
    String href = 
      "<a href=\"" + url_clase + "/servlet/" + clase + "?dic_estado=" + 
      estado.trim() + "\" target = \"" + target.trim() + "\">";
    if (imagen != "")
      href = href + generaImagen(tabla, imagen, mensaje);
    else
      href = href + mensaje;
    href = href + "</a>";
    return href;
  }

  public static String generaHrefNuevo(String tabla, String estado, 
                                       String mensaje, String imagen, 
                                       String target, String paramAd, 
                                       String url_clase)
  {
    String href = 
      "<a href=\"" + url_clase + "?dic_tabla=" + tabla.trim() + "&dic_estado=" + 
      estado.trim() + paramAd + "\" target = \"" + target.trim() + "\">";
    if (imagen != "")
      href = href + generaImagen(tabla, imagen, mensaje);
    else
      href = href + mensaje;
    href = href + "</a>";
    return href;
  }

  public static String generaHtmlMenu(String campo, String valorcmb, 
                                      String joinFK, boolean todoSelecto, 
                                      boolean jump) throws IOException
  {
    String strResultado = "";
    String valorAd = "";
    if (joinFK.startsWith("opc_ad="))
    {
      valorAd = utilerias.generaValDer("opc_ad=", joinFK);
      valorAd = utilerias.generaValIzq("|", valorAd);
      joinFK = utilerias.generaValDer("|", joinFK);
    }
    if (valorcmb != null && valorcmb != "")
    {
      if (valorcmb.toLowerCase().indexOf("select") >= 0)
      {
        Vector vRecord = new Vector();
        try
        {
          vRecord = DbAppUnivC.execQuery(valorcmb);
        } catch (Exception _ex)
        {
          System.out.println("error al correr el sql, ver log");
          vRecord = new Vector();
        }
        if (vRecord.size() == 0)
        {
          valorcmb = "";
        } else
        {
          dbRecord ksrecord = (dbRecord)vRecord.elementAt(0);
          valorcmb = ksrecord.getField(1).trim();
        }
      }
      if (valorAd.length() > 0)
        strResultado = 
            generaComboyValAd(campo, joinFK, valorcmb, valorAd, todoSelecto, 
                              jump);
      else if (jump)
        strResultado = generaComboJump(campo, joinFK, valorcmb);
      else
        strResultado = generaCombo(campo, joinFK, valorcmb, todoSelecto);
    } else if (valorAd.length() > 0)
      strResultado = 
          generaComboyValAd(campo, joinFK, "", valorAd, todoSelecto, jump);
    else if (jump)
      strResultado = generaComboJump(campo, joinFK, "");
    else
      strResultado = generaCombo(campo, joinFK, "", todoSelecto);
    return strResultado;
  }

  public static String generaImagen(String nombre, String src, String alt)
  {
    String imagen = 
      "<img name=\"" + nombre.trim() + "\" border=\"0\" src=\"" + src.trim() + 
      "\" alt=\"" + alt.trim() + "\">";
    return imagen;
  }

  public static String generaMenus(String grupo, String idioma, 
                                   HttpServletRequest req, 
                                   String link) throws IOException
  {
    String opciones = "";
    String color0 = "\"#FFFFFF\",\"#FFFFFF\",\n";
    color0 = color0 + "\"#3C3C3C\",\"#92999d\",\n";
    color0 = color0 + "\"#3C3C3C\",\"#3C3C3C\"";
    String color1 = "\"#FFFFFF\",\"#000000\",\n";
    color1 = color1 + "\"#92999d\",\"#5F9BCF\",\n";
    color1 = color1 + "\"#000000\",\"#000000\"";
    String color2 = "\"#FFFFFF\",\"#000000\",\n";
    color2 = color2 + "\"#5F9BCF\",\"#CCCCCC\",\n";
    color2 = color2 + "\"#000000\",\"#000000\"";
    String color3 = "\"#FFFFFF\",\"#FFFFFF\",\n";
    color3 = color3 + "\"#3C3C3C\",\"#92999d\",\n";
    color3 = color3 + "\"#3C3C3C\",\"#3C3C3C\"";
    String color4 = "\"#FFFFFF\",\"#000000\",\n";
    color4 = color4 + "\"#92999d\",\"#5F9BCF\",\n";
    color4 = color4 + "\"#000000\",\"#000000\"";
    String colores[] = new String[5];
    colores[0] = color0;
    colores[1] = color1;
    colores[2] = color2;
    colores[3] = color3;
    colores[4] = color4;
    String sistema = utilerias.tomaParametro("dic_sistema", req);
    String sql = 
      "select mp_cve_menu, mp_ancho, mp_x, mp_y from gentmp where mp_cvesis = '" + 
      sistema + "' order by mp_cve_menu";
    Vector menus_padres = DbAppCache.execQuery(sql);
    sql = 
        "select me_cveopc_ejec , mo_nombre,  op_url, op_prog_apart, op_tipo, me_cveopc from gentop , gentmo, gentme, gentpe ";
    sql = 
        sql + " where mo_cveopc = me_cveopc_ejec  and mo_cvesis = '" + sistema + 
        "' and me_cveopc_ejec = op_cveopc  and pe_cveopc = me_cveopc_ejec  and pe_gpousu = '" + 
        grupo + "' and mo_cveidi ='Esp' ";
    sql = 
        sql + " and me_cvesis = mo_cvesis and  op_cvesis = mo_cvesis and pe_cvesis = mo_cvesis order by me_numopc";
    Vector menus_hijos = DbAppCache.execQuery(sql);
    for (int i = 0; i < menus_padres.size(); i++)
    {
      dbRecord ks = (dbRecord)menus_padres.elementAt(i);
      String padre = ks.getField(1);
      String ancho = ks.getField(2);
      String posx = ks.getField(3);
      String posy = ks.getField(4);
      int imenu = i + 1;
      String nMenu = "arMenu" + imenu;
      opciones = opciones + nMenu + " = new Array(" + "\n";
      opciones = opciones + ancho + ",\n";
      opciones = opciones + posx + "," + posy + ",\n";
      opciones = opciones + colores[0] + ",\n";
      opciones = 
          opciones + generaOpcionesMenu(nMenu, padre.trim(), menus_hijos, 
                                        colores, sistema, link) + "\n";
    }

    return opciones;
  }

  private static String generaOpcionesArbol(String menu, String submenu, 
                                            String padre, Vector menus_hijos, 
                                            String sistema, String link)
  {
    String opcionesArbol = "";
    int cont = 0;
    int iNum = 0;
    for (; cont < menus_hijos.size(); cont++)
    {
      dbRecord ks = (dbRecord)menus_hijos.elementAt(cont);
      String clave = ks.getField(1);
      String opcion = ks.getField(2);
      String opcion_url = ks.getField(3);
      String programa_aparte = ks.getField(4);
      String tipo = ks.getField(5);
      String clave_padre = ks.getField(6);
      clave = clave.trim();
      opcion = opcion.trim();
      if (opcion_url == null)
        opcion_url = "";
      opcion_url = opcion_url.trim();
      opcion_url = 
          link + "?dic_estado=8&dic_tabla=" + opcion_url + "&dic_sistema=" + 
          sistema;
      if (programa_aparte == null)
        programa_aparte = "";
      if (programa_aparte.trim().length() > 0)
        opcion_url = 
            utilerias.replaceString(programa_aparte, "programa_aparte=", "");
      if (clave_padre.equals(padre))
      {
        String nombreOpc = menu + iNum;
        String nombreUrlOpc = 
          utilerias.replaceString(nombreOpc, "desc", "desturl");
        String sTipo = "1";
        if (tipo.equals("M"))
          sTipo = "0";
        opcionesArbol = 
            opcionesArbol + "<param name=\"" + nombreOpc + "\" value=\"" + 
            sTipo + "|" + opcion + "\">\n";
        if (!tipo.equals("M"))
          opcionesArbol = 
              opcionesArbol + "<param name=\"" + nombreUrlOpc + "\" value=\"" + 
              opcion_url + "\">\n";
        if (tipo.equals("M"))
          opcionesArbol = 
              opcionesArbol + generaOpcionesArbol(nombreOpc + "-", submenu, 
                                                  clave, menus_hijos, sistema, 
                                                  link);
        if (clave.equals(submenu))
        {
          String openI = utilerias.replaceString(nombreOpc, "desc", "");
          opcionesArbol = 
              opcionesArbol + "<param name=\"openindex\" value=\"" + openI + 
              "\">\n";
        }
        iNum++;
      }
    }

    return opcionesArbol;
  }

  private static String generaOpcionesMenu(String menu, String padre, 
                                           Vector menus_hijos, 
                                           String[] colores, String sistema, 
                                           String link)
  {
    int cont = 0;
    String opcionesMenu = "";
    String bullet = 
      "<img src='/JFMedia/menuimg/bullet.gif' width='12' height='8'>";
    String bullethlwhite = 
      "<img src='/JFMedia/menuimg/bullethl.gif' width='12' height='8'>";
    Vector menusAd = new Vector();
    int isubM = 0;
    int item = 0;
    int iNum = 1;
    boolean hijos = false;
    for (; cont < menus_hijos.size(); cont++)
    {
      dbRecord ks = (dbRecord)menus_hijos.elementAt(cont);
      String clave = ks.getField(1);
      String opcion = ks.getField(2);
      String opcion_url = "";
      String programa_aparte = ks.getField(4);
      String tipo = ks.getField(5);
      String clave_padre = ks.getField(6);
      clave = clave.trim();
      opcion = opcion.trim();
      opcion_url = opcion_url.trim();
      opcion_url = 
          link + "?dic_estado=92&submenu=" + clave + "&dic_sistema=" + sistema;
      if (clave_padre.equals(padre))
      {
        hijos = true;
        String sTipo = "0";
        if (tipo.equals("M"))
        {
          item++;
          String tempM[] = new String[2];
          tempM[0] = menu + "_" + iNum;
          tempM[1] = clave;
          menusAd.addElement(tempM);
          sTipo = "1";
        }
        if (iNum > 1)
          opcionesMenu = opcionesMenu + ",\n";
        opcionesMenu = 
            opcionesMenu + "\"" + opcion + "\",\"" + opcion_url + "\"," + 
            sTipo;
        iNum++;
      }
    }

    if (!hijos)
      opcionesMenu = opcionesMenu + "\"Sin opciones\",\"\",0";
    opcionesMenu = opcionesMenu + "\n)\n";
    if (menusAd.size() > 0)
      for (cont = 0; cont < menusAd.size(); cont++)
      {
        String tempM[] = (String[])menusAd.elementAt(cont);
        String nMenu = tempM[0];
        String nPadre = tempM[1];
        opcionesMenu = opcionesMenu + nMenu + " = new Array(" + "\n";
        opcionesMenu = opcionesMenu + "\"\",\n";
        opcionesMenu = opcionesMenu + "\"\",\"\",\n";
        String nMenu2 = nMenu;
        int nivel = 0;
        for (; nMenu2.indexOf("_") > 0; 
             nMenu2 = utilerias.replaceString1(nMenu2, "_", ""))
          nivel++;

        opcionesMenu = opcionesMenu + colores[nivel] + ",\n";
        opcionesMenu = 
            opcionesMenu + generaOpcionesMenu(nMenu, nPadre.trim(), menus_hijos, 
                                              colores, sistema, link) + "\n";
      }

    return opcionesMenu;
  }

  public static String generaPantalla(String tabla, int tipo, String otros, 
                                      String datos, String titulo, 
                                      String ordenado, 
                                      HttpServletRequest req) throws IOException
  {
    String plantilla = "";
    String sistema = utilerias.tomaParametro("dic_sistema", req);
    String nombre_prop = "/kaizen/" + sistema + "Web.properties";
    Properties props = utilerias.loadProperties(nombre_prop);
    if (tipo == ALTAS)
      plantilla = props.getProperty("htmAltas");
    if (tipo == BAJAS)
      plantilla = props.getProperty("htmBajas");
    if (tipo == MODIFICACION)
      plantilla = props.getProperty("htmModificacion");
    if (tipo == CONSULTA)
      plantilla = props.getProperty("htmConsulta");
    if (tipo == FRMREPORTE)
      plantilla = props.getProperty("htmFrmReporte");
    if (tipo == REPORTE)
      plantilla = props.getProperty("htmReporte");
    if (tipo == BUSQUEDA)
      plantilla = props.getProperty("htmBusqueda");
    if (tipo == PROCESO)
      plantilla = props.getProperty("htmProceso");
    String resPlantilla = plantilla;
    String dirPlantillas = props.getProperty("plantillas");
    String dirPlantillasGenerales = 
      props.getProperty("dirPlantillasGenerales");
    plantilla = generaPlantilla(dirPlantillas + tabla + "/" + plantilla, req);
    if (plantilla.indexOf("Error: 404") >= 0 || 
        plantilla.indexOf("404") >= 0 || plantilla.trim().length() == 0)
      plantilla = generaPlantilla(dirPlantillasGenerales + resPlantilla, req);
    plantilla = utilerias.replaceString1(plantilla, "--datos--", datos);
    int i = 0;
    plantilla = utilerias.replaceString1(plantilla, "--datos--", datos);
    plantilla = utilerias.replaceString1(plantilla, "--otros--", otros);
    plantilla = utilerias.replaceString1(plantilla, "--titulo--", titulo);
    plantilla = utilerias.replaceString1(plantilla, "--ordenado--", ordenado);
    return plantilla;
  }

  public static String generaPantalla(Vector vEtiquetas, Vector vObjetos, 
                                      String accion, String valorsbm, 
                                      String tabla, int tipo, String hiddens, 
                                      String otros, String detalle, 
                                      String borrar, boolean tomaPlantilla, 
                                      String alta, 
                                      HttpServletRequest req) throws IOException
  {
    String plantilla = "";
    if (vEtiquetas.size() <= 0 || vObjetos.size() <= 0)
    {
      System.out.println("Etiquetas u Objetos no contienen datos");
      return "";
    }
    if (vEtiquetas.size() != vObjetos.size())
    {
      System.out.println("Los datos de Etiquetas y Objetos no coinciden en tama\361o");
      return "";
    }
    String sistema = utilerias.tomaParametro("dic_sistema", req);
    String nombre_prop = "/kaizen/" + sistema + "Web.properties";
    Properties props = utilerias.loadProperties(nombre_prop);
    if (tipo == ALTAS)
      plantilla = props.getProperty("htmAltas");
    if (tipo == BAJAS)
      plantilla = props.getProperty("htmBajas");
    if (tipo == MODIFICACION)
      plantilla = props.getProperty("htmModificacion");
    if (tipo == CONSULTA)
      plantilla = props.getProperty("htmConsulta");
    if (tipo == FRMREPORTE)
      plantilla = props.getProperty("htmFrmReporte");
    if (tipo == REPORTE)
      plantilla = props.getProperty("htmReporte");
    if (tipo == BUSQUEDA)
      plantilla = props.getProperty("htmBusqueda");
    if (tipo == PROCESO)
      plantilla = props.getProperty("htmProceso");
    String resPlantilla = plantilla;
    String dirPlantillas = props.getProperty("plantillas");
    String dirPlantillasGenerales = 
      props.getProperty("dirPlantillasGenerales");
    if (!tomaPlantilla)
      return generaPantallaComun(vEtiquetas, vObjetos, accion, valorsbm, 
                                 hiddens, otros, detalle, borrar, alta, 
                                 dirPlantillasGenerales + resPlantilla, req);
    plantilla = generaPlantilla(dirPlantillas + tabla + "/" + plantilla, req);
    if (plantilla.indexOf("Error: 404") >= 0 || 
        plantilla.indexOf("404") >= 0 || plantilla.trim().length() == 0)
      return generaPantallaComun(vEtiquetas, vObjetos, accion, valorsbm, 
                                 hiddens, otros, detalle, borrar, alta, 
                                 dirPlantillasGenerales + resPlantilla, req);
    int i = 0;
    System.out.println(vEtiquetas.size());
    for (i = 0; i < vEtiquetas.size(); i++)
    {
      String pl_eta = "--et" + String.valueOf(i + 1) + "--";
      String pl_ob = "--ob" + String.valueOf(i + 1) + "--";
      plantilla = 
          utilerias.replaceString(plantilla, pl_eta, validaValor((String)vEtiquetas.elementAt(i)));
      plantilla = 
          utilerias.replaceString(plantilla, pl_ob, validaValor((String)vObjetos.elementAt(i)));
    }

    plantilla = utilerias.replaceString1(plantilla, "--accion--", accion);
    plantilla = utilerias.replaceString1(plantilla, "--submit--", valorsbm);
    plantilla = utilerias.replaceString1(plantilla, "--hiddens--", hiddens);
    plantilla = utilerias.replaceString1(plantilla, "--otros--", otros);
    plantilla = utilerias.replaceString1(plantilla, "--detalle--", detalle);
    plantilla = utilerias.replaceString1(plantilla, "--borrar--", borrar);
    plantilla = utilerias.replaceString1(plantilla, "--alta--", alta);
    System.out.println(accion);
    return plantilla;
  }

  public static String generaPantallaComun(Vector vEtiquetas, Vector vObjetos, 
                                           String accion, String valorsbm, 
                                           String hiddens, String otros, 
                                           String detalle, String borrar, 
                                           String alta, String plantillaComun, 
                                           HttpServletRequest req) throws IOException
  {
    String datos = "";
    datos = generaTabla2x2(vEtiquetas, vObjetos, req);
    if (accion.length() > 0)
      datos = generaForma(datos, accion, valorsbm, hiddens);
    datos = datos + alta + "\n";
    datos = datos + borrar + "\n";
    datos = datos + detalle + "\n";
    datos = datos + "<br>" + otros;
    plantillaComun = generaPlantilla(plantillaComun, req);
    plantillaComun = 
        utilerias.replaceString(plantillaComun, "--datos--", datos);
    return plantillaComun;
  }

  public static String generaPlantilla(String plantilla, 
                                       String s_host) throws IOException
  {
    String s_plantilla = "";
    try
    {
      try
      {
        URL url = new URL(s_host + plantilla);
        BufferedReader inStream = 
          new BufferedReader(new InputStreamReader(url.openStream()));
        String line;
        while ((line = inStream.readLine()) != null)
          s_plantilla = s_plantilla + line + "\n";
        inStream.close();
      } catch (MalformedURLException _ex)
      {
        return "Excepcion URL mal formada en generaPlantilla";
      }
    } catch (Exception _ex)
    {
      return "Error 404: Excepcion general en generaPlantilla: " +_ex;
    }
    return s_plantilla;
  }

  public static String generaPlantilla(String plantilla, 
                                       HttpServletRequest req) throws IOException
  {
    setHost(req);
    if (host == null)
      host = "";
    if (host.length() == 0)
    {
      System.out.println("generaPlantilla, ERROR: no hay ningun host !");
      return "";
    } else
    {
      return generaPlantilla(plantilla, host);
    }
  }

  public static String generaRef(String cadLink, String nombre, String valor)
  {
    String ref = "";
    cadLink = cadLink.trim();
    cadLink = utilerias.sustituyeEspaciosLink(cadLink);
    if (cadLink.length() > 0)
      ref = "&" + nombre + "=" + valor;
    else
      ref = "?" + nombre + "=" + valor;
    return cadLink + ref;
  }

  private static String generaSubmit(String valor)
  {
    String submit = 
      "<input type=\"submit\" value=\"" + valor.trim() + "\">" + "\n";
    return submit;
  }

  private static String generaTabla2x2(Vector vEtiquetas, Vector vObjetos, 
                                       HttpServletRequest req) throws IOException
  {
    String tabla2x2 = "";
    String datos = "";
    int i = 0;
    String sistema = utilerias.tomaParametro("dic_sistema", req);
    String nombre_prop = "/kaizen/" + sistema + "Web.properties";
    Properties props = utilerias.loadProperties(nombre_prop);
    String datColorRen = props.getProperty("datColorRenTabla2x2");
    String etiFont = props.getProperty("etiFont");
    String etiTamFont = props.getProperty("etiTamFont");
    String etiColorFont = props.getProperty("etiColorFont");
    for (i = 0; i < vEtiquetas.size(); i++)
    {
      if (i % 2 == 0)
        datos = datos + "<tr bgcolor=\"" + datColorRen + "\">";
      else
        datos = datos + "<tr>";
      datos = 
          datos + "<td>" + generaTextoEtiqueta(validaValor((String)vEtiquetas.elementAt(i)), 
                                               etiFont, etiTamFont, 
                                               etiColorFont) + "</td>";
      datos = 
          datos + "<td>" + generaTextoEtiqueta(validaValor((String)vObjetos.elementAt(i)), 
                                               etiFont, etiTamFont, 
                                               etiColorFont) + "</td>";
      datos = datos + "</tr>\n";
    }

    tabla2x2 = "<table border=\"0\" >\n";
    tabla2x2 = tabla2x2 + datos + "\n";
    tabla2x2 = tabla2x2 + "</table>\n";
    return tabla2x2;
  }

  public static String generaTextArea(String campo, String longitud, 
                                      String ancho, String lineas, 
                                      String valor)
  {
    String texto = 
      "<textarea  name=\"" + campo.trim() + "\" rows=\"" + lineas.trim() + 
      "\" cols=\"" + ancho.trim() + "\">" + valor + "</textarea>";
    return texto;
  }

  public static String generaTexto(String campo, String longitud, String ancho, 
                                   String valor)
  {
    if (campo == null)
      campo = "";
    if (valor == null)
      valor = "";
    String texto = 
      "<input type=\"text\" name=\"" + campo.trim() + "\" maxlength=\"" + 
      longitud.trim() + "\" size=\"" + ancho.trim() + "\" value=\"" + 
      valor.trim() + "\">";
    return texto;
  }

  public static String generaTextoEtiqueta(String texto, String tipo, 
                                           String tam, String color)
  {
    return "<font face=\"" + tipo + "\" size=\"" + tam + "\" color=\"" + 
      color + "\">" + texto + "</font>";
  }

  public static String getHost()
  {
    return host;
  }

  public static String liga(String texto, String link)
  {
    link = utilerias.sustituyeEspaciosLink(link);
    String liga = "<a href=\"" + link + "\">" + texto + "</a>";
    return liga;
  }

  public static String ligaImagenTarget(String imagen, String link, 
                                        String target, String alt)
  {
    link = utilerias.sustituyeEspaciosLink(link);
    String img = 
      "<img border=\"0\" src=\"" + imagen + "\" alt=\"" + alt + "\">";
    String liga = 
      "<a href=\"" + link + "\"  target = \"" + target + "\">" + img + "</a>";
    return liga;
  }

  public static String ligaTarget(String texto, String link, String target)
  {
    link = utilerias.sustituyeEspaciosLink(link);
    String liga = 
      "<a href=\"" + link + "\" target = \"" + target + "\">" + texto + "</a>";
    return liga;
  }

  public static String obtieneValoresLista(String campo, 
                                           HttpServletRequest req)
  {
    String lista[] = req.getParameterValues(campo);
    String listaFormato = "";
    String sepLista = ",";
    if (lista != null)
    {
      for (int a = 0; a < lista.length; a++)
      {
        listaFormato = listaFormato + lista[a];
        if (a + 1 < lista.length)
          listaFormato = listaFormato + sepLista;
      }

    }
    return listaFormato;
  }

  public static String obtieneValoresListaStore(String campo, 
                                                HttpServletRequest req)
  {
    String lista[] = req.getParameterValues(campo);
    String listaFormato = "";
    String sepLista = "|";
    if (lista != null)
    {
      for (int a = 0; a < lista.length; a++)
      {
        listaFormato = listaFormato + lista[a];
        if (a + 1 < lista.length)
          listaFormato = listaFormato + sepLista;
      }

      if (listaFormato.length() > 0)
        listaFormato = listaFormato + sepLista;
    }
    return listaFormato;
  }

  public static void setHost(HttpServletRequest req) throws IOException
  {
    try
    {
      String sistema = utilerias.tomaParametro("dic_sistema", req);
      String nombre_prop = "/kaizen/" + sistema + "Web.properties";
      Properties props = utilerias.loadProperties(nombre_prop);
      host = props.getProperty("host");
    } catch (Exception _ex)
    {
      host = "";
    }
  }

  public static String tabla(String Borde, String Datos, String ancho)
  {
    String salida = 
      "<table  width=\"" + ancho + "\" border=\"" + Borde + "\"  >" + "\n" + 
      Datos + "\n" + "</table>";
    return salida;
  }

  public static String tablaAlineada(String Borde, String Datos, String ancho, 
                                     String alineacion)
  {
    String salida = 
      "<table  width=\"" + ancho + "\" border=\"" + Borde + "\" align=\"" + 
      alineacion + "\">" + "\n" + Datos + "\n" + "</table>";
    return salida;
  }

  public static String tablaCol(String texto, String color, String font, 
                                String tamfont, String bgColor)
  {
    String salida = 
      "<td bgcolor=\"" + bgColor + "\"><font color=\"" + color + "\" face=\"" + 
      font + "\" size=\"" + tamfont + "\">" + texto + "</font></td>" + "\n";
    return salida;
  }

  public static String tablaColAlto(String texto, String alto, String bgColor)
  {
    String salida = 
      "<td bgcolor=\"" + bgColor + "\" heigth=\"" + alto + "\">" + texto + 
      "</td>" + "\n";
    return salida;
  }

  public static String tablaColNormal(String texto, String bgColor)
  {
    String salida = 
      "<td bgcolor=\"" + bgColor + "\" >" + texto + "</td>" + "\n";
    return salida;
  }

  public static String tablaColPorcent(String texto, String porcent, 
                                       String bgColor)
  {
    String salida = 
      "<td bgcolor=\"" + bgColor + "\" width=\"" + porcent + "\">" + texto + 
      "</td>" + "\n";
    return salida;
  }

  public static String textoFormato(String texto, String font, String tamfont)
  {
    String salida = 
      "<font  face=\"" + font + "\" size=\"" + tamfont + "\">" + texto + 
      "</font>" + "\n";
    return salida;
  }

  public static String textoFormato(String texto, String color, String font, 
                                    String tamfont)
  {
    String salida = 
      "<font color=\"" + color + "\" face=\"" + font + "\" size=\"" + tamfont + 
      "\">" + texto + "</font>" + "\n";
    return salida;
  }

  private static String validaValor(String val)
  {
    if (val != null)
      return val;
    else
      return "";
  }

  public static String host;
  public static int ALTAS = 1;
  public static int BAJAS = 2;
  public static int MODIFICACION = 3;
  public static int CONSULTA = 4;
  public static int FRMREPORTE = 5;
  public static int REPORTE = 6;
  public static int BUSQUEDA = 7;
  public static int PROCESO = 8;

}
